package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.CondicaoPagamentoDao;
import com.dao.ParcelaDao;
import com.model.CondicaoPagamento;
import com.model.Parcela;

public class CondicaoPagamentoFacade implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private CondicaoPagamentoDao condicaoPagamentoDao = new CondicaoPagamentoDao();

	public void createCondicaoPagamento(CondicaoPagamento condicaoPagamento, List<Parcela> parcelas) {
		condicaoPagamentoDao.beginTransaction();
		
		try {
			condicaoPagamentoDao.save(condicaoPagamento);
			System.out.println("Condicao salva");
			condicaoPagamentoDao.commitAndCloseTransaction();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("erro ao salvar a condicao");
		}
		ParcelaFacade parcelaFacade = new ParcelaFacade();
		for (Parcela parcela : parcelas) {
			parcela.setCondicaoPagamento(condicaoPagamento);
				parcelaFacade.createParcela(parcela);				
				System.out.println("parcela salva");
		}				
	}

//	public void updateCondicaoPagamento(CondicaoPagamento condicaoPagamento) {
//		condicaoPagamentoDao.beginTransaction();
//		CondicaoPagamento persistedCondicaoPagamento = condicaoPagamentoDao.find(condicaoPagamento.getId());
//		persistedCondicaoPagamento.setName(condicaoPagamento.getName());
//		persistedCondicaoPagamento.setAge(condicaoPagamento.getAge());
//		condicaoPagamentoDao.commitAndCloseTransaction();
//	}
	
	public void deleteCondicaoPagamento(CondicaoPagamento condicaoPagamento){
		condicaoPagamentoDao.beginTransaction();
		CondicaoPagamento persistedCondicaoPagamentoWithIdOnly = condicaoPagamentoDao.findReferenceOnly(condicaoPagamento.getIdCondicaoPagamento());
		condicaoPagamentoDao.delete(persistedCondicaoPagamentoWithIdOnly);
		condicaoPagamentoDao.commitAndCloseTransaction();
		
	}

	public CondicaoPagamento findCondicaoPagamento(int condicaoPagamentoId) {
		condicaoPagamentoDao.beginTransaction();
		CondicaoPagamento condicaoPagamento = condicaoPagamentoDao.find(condicaoPagamentoId);
		condicaoPagamentoDao.closeTransaction();
		return condicaoPagamento;
	}

	public List<CondicaoPagamento> listAll() {
		condicaoPagamentoDao.beginTransaction();
		List<CondicaoPagamento> result = condicaoPagamentoDao.findAll();
		condicaoPagamentoDao.closeTransaction();

		return result;
	}

//	public CondicaoPagamento findCondicaoPagamentoWithAllDogs(int condicaoPagamentoId) {
//		condicaoPagamentoDao.beginTransaction();
//		CondicaoPagamento condicaoPagamento = condicaoPagamentoDao.findCondicaoPagamentoWithAllDogs(condicaoPagamentoId);
//		condicaoPagamentoDao.closeTransaction();
//		return condicaoPagamento;
//	}
//
//	public void addDogToCondicaoPagamento(int dogId, int condicaoPagamentoId) {
//		condicaoPagamentoDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		CondicaoPagamento condicaoPagamento = condicaoPagamentoDao.find(condicaoPagamentoId);
//		condicaoPagamento.getDogs().add(dog);
//		dog.getCondicaoPagamento().add(condicaoPagamento);
//		condicaoPagamentoDao.commitAndCloseTransaction();
//	}
//
//	public void removeDogFromCondicaoPagamento(int dogId, int condicaoPagamentoId) {
//		condicaoPagamentoDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		CondicaoPagamento condicaoPagamento = condicaoPagamentoDao.find(condicaoPagamentoId);
//		condicaoPagamento.getDogs().remove(dog);
//		dog.getCondicaoPagamento().remove(condicaoPagamento);
//		condicaoPagamentoDao.commitAndCloseTransaction();
//	}
}